草庐IT

c++ - 包装第 3 方 DLL

全部标签

c++ - dll 注入(inject)失败

我正在为我的网络制作一个安全程序。其中一个实例是检查和监控调用了哪些api和库。执行此操作的dll和与之配套的程序已经完成。但是有一个问题我似乎无法解决。当尝试使用NtCreateThreadEx将我的dll注入(inject)系统进程(例如explorer.exe,我的主要测试系统进程)时,我得到了返回值:C0000022,这意味着:Status_Access_Denied(返回NTSTATUS,但DWORD可以)我不知道该怎么做,我以管理员身份运行,我提升了我的权限,并使用了正确的功能,但我仍然得到c0000022这是我用来注入(inject)的代码#include"main.h"

c++ - 修剪我的 "working set"对没有页面文件的系统有什么影响?

一位客户提示我的程序使用了太多内存。然而,在与他们合作一段时间后,我意识到:他们关闭了页面文件(在他们的终端服务框中)。他们担心我程序的任务管理器中“私有(private)工作集”的大小。所以,我的问题是,如果我只是在我的程序启动后使用EmptyWorkingSet()修剪工作集的大小(它在XML解析期间使用大量内存但随后将其删除,但工作集不会似乎下降了)我可以让工作集数字下降。然而,这真的能帮助客户吗?我有一种感觉,这只是意味着工作集将被分页,我相信如果您关闭了页面文件,工作集无论如何都会由实际内存支持....任务管理器报告的“私有(private)工作集”真的是我的程序有多少新的/

c - C 中的 Windows 用户主文件夹 (MinGW)

我正在尝试将用C编写的应用程序从Linux移植到Windows。目前,我已经完成了“硬”部分的修复工作,例如missingposixfeatures之类的。应用程序现在可以在Windows上编译、链接和运行(fork()除外,稍后将替换为Windows服务代码)。我现在遇到的唯一问题是在MSYSshell中一切正常(这为我映射了unix路径)。在MSYSshell之外它不会工作,因为~不可用。我正在寻找在我的#ifdef内容中设置Windows用户主页的最佳方法。我在某处读到过关于%USERPROFILE%的内容,但这似乎不是work. 最佳答案

c - Windows 控制台 API

我在windows编程方面经验不足,想知道apiwindows使用什么在c中制作文本用户界面,就像ncurses在基于unix的系统上所做的那样。它是win32api的一部分吗?我在哪里可以获得更多信息? 最佳答案 有windowsconsoleapi.而且,你总能得到ncursesforwindows. 关于c-Windows控制台API,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questi

c - 如何在Windows中获取操作系统名称,版本?

在windows中获取操作系统名称,操作系统版本在以下几个方面哪个更好-获取信息的时间兼容所有Windows操作系统,如xp、vista和更高版本系统信息或wmic命令?我想避免在C中使用OSVersionInfoEx,因为必须对营销名称检测进行硬编码,并且如果引入了新的Windows版本,将会增加维护工作。请分享您的意见。 最佳答案 GetVersionEx-获取基本操作系统版本号的速度再快不过了。但你是对的,你将无法将较新版本的操作系统映射到正确的字符串。您是否考虑过这样做:OSVERSIONINFOEXversion={};c

c - 在驱动程序和 Windows 服务之间传递数据

将数据从设备驱动程序传递到Windows服务并返回的最干净的方法是什么? 最佳答案 这通常是使用DeviceInputandOutputControl(IOCTL)实现的.您可以定义自己的私有(private)控制码,然后双向发送信息。该函数是从用户模式调用的,即您的服务。 关于c-在驱动程序和Windows服务之间传递数据,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/6152

C 异常处理

我想知道如何在C中处理异常,特别是EXCEPTION_GUARD_PAGE异常。我将尝试更简要地解释一下情况:我想将一个部分/页面部分标记为PAGE_GUARD,每当程序遇到它们时我想执行一些任务,我尝试使用经典的VirtualAlloc引起异常->Write->Exception命中但我知道在C中捕获异常非常感谢您的帮助。提前致谢。 最佳答案 MSDN拥有您需要的一切:UsinganExceptionHandlerThetry-exceptStatement在这种特殊情况下,您需要这样的东西:__try{/*Codethatmay

c++ - 一个程序使用的DLL,里面声明的变量存放在哪里?

我有一个程序(不是我的,没有源代码),它公开了一个接口(interface),因此我可以编写一个DLL,它将被我的程序调用。现在我想知道当我在我创建的这个DLL中声明一些变量时,它将存储在什么内存空间中?我的意思是,它只会位于EXE地址空间的内存空间中,对吗?但是,关于EXE的DLL是如何加载的?我认为一个DLL只在内存中加载过一次,那么这与我在我的DLL中创建局部变量有什么关系呢?(如对象、类等) 最佳答案 DLL每个进程加载一次。曾几何时,DLL在进程之间共享,但自从Windows3.1走上渡渡鸟之路以来,情况就不同了。您在DL

客户端连接失败

我是一名新手/初级程序员,在使用一些简单的客户端/服务器C代码时遇到问题。我的最终目标是将方位角/仰角数据的“流”从服务器发送到客户端,然后在接收到该数据时对其进行转换(这只是一个除法,但我真的不知道该怎么做任一)转换为平移/俯仰装置的位置数据,然后通过串口将转换后的数据输出到平移/俯仰云台。(稍后我可能会回来询问...)现在我只是想弄清楚如何发送和接收数据。我从这个网站上抓取了代码。http://www.tenouk.com/Winsock/Winsock2example3.html.我必须四处移动一些声明才能编译代码。我在客户端电脑上使用Windows7和VS2010专业版。客户端

windows - Windows 7(64 位版本)上的 AppInit_DLL

我已经编写了一个DLL来帮助我调试我的应用程序。我正在运行64位版本的windows7。这是我观察到的:(1)如果我设置HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\WindowsNT\CurrentVersion\Windows\AppInit_DLLs并运行我的应用程序的32位版本,DLL被加载并且一切正常。(2)如果我设置HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Windows\AppInit_DLLs并运行我的应用程序的64位版本,应用程序启